package org.sakaiproject.delegatedaccess.utils;
import java.util.List;
import java.util.Map;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeNode;
import org.apache.wicket.Component;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.extensions.markup.html.tree.table.ColumnLocation;
import org.apache.wicket.extensions.markup.html.tree.table.IColumn;
import org.apache.wicket.extensions.markup.html.tree.table.IRenderable;
import org.apache.wicket.extensions.markup.html.tree.table.PropertyRenderableColumn;
import org.apache.wicket.model.PropertyModel;
import org.sakaiproject.delegatedaccess.model.NodeModel;
import org.sakaiproject.delegatedaccess.tool.pages.EditablePanelDropdown;
import org.sakaiproject.delegatedaccess.tool.pages.EditablePanelDropdownText;
import org.sakaiproject.delegatedaccess.tool.pages.EditablePanelEmpty;
import org.sakaiproject.delegatedaccess.util.DelegatedAccessConstants;
/**
* Column renderer for the dropdown column (role)
*
* @author Bryan Holladay (holladay@longsight.com)
*
*/
public class PropertyEditableColumnDropdown extends PropertyRenderableColumn
{
private Map<String, String> roleMap;
private int type;
private String[] subAdminRoles;
public PropertyEditableColumnDropdown(ColumnLocation location, String header, String propertyExpression, Map<String, String> roleMap, int type, String[] subAdminRoles)
{
super(location, header, propertyExpression);
this.roleMap = roleMap;
this.type = type;
this.subAdminRoles = subAdminRoles;
}
/**
* @see IColumn#newCell(MarkupContainer, String, TreeNode, int)
*/
public Component newCell(MarkupContainer parent, String id, TreeNode node, int level)
{
if(!((NodeModel) ((DefaultMutableTreeNode) node).getUserObject()).isNodeEditable()){
return new EditablePanelEmpty(id);
}
if(DelegatedAccessConstants.TYPE_ACCESS_SHOPPING_PERIOD_USER == type){
if(!((NodeModel) ((DefaultMutableTreeNode) node).getUserObject()).getNodeShoppingPeriodAdmin()){
return new EditablePanelEmpty(id);
}
}
if(((NodeModel) ((DefaultMutableTreeNode) node).getUserObject()).isDirectAccess()){
return new EditablePanelDropdown(id, new PropertyModel(node, getPropertyExpression()), (NodeModel) ((DefaultMutableTreeNode) node).getUserObject(), node, roleMap, type, subAdminRoles);
}else{
return new EditablePanelDropdownText(id, new PropertyModel(node, getPropertyExpression()), (NodeModel) ((DefaultMutableTreeNode) node).getUserObject(), node, roleMap, type);
}
}
/**
* @see IColumn#newCell(TreeNode, int)
*/
public IRenderable newCell(TreeNode node, int level)
{
return null;
}
}